<template>
	<div>
		<!-- 全局加载提示 -->
		<view v-if="loading" class="global-loading">
			<text>加载中...</text>
		</view>
		<router-view />
	</div>
</template>

<script>
	export default {
		data() {
			return {
				loading: false
			};
		},

		onLaunch() {
			console.log('App Launch');

			// 使用延迟确保导航顺序
			setTimeout(() => {
				this.handleAppNavigation();
			}, 100);
		},
		methods: {
			async handleAppNavigation() {
				const token = uni.getStorageSync('token');

				if (!token) {
					// 未登录：直接跳转到登录页，不执行后续初始化
					uni.redirectTo({
						url: '/pages/login/login'
					});
					return; // 关键：立即返回，不执行后面的代码
				}

				// 已登录：执行初始化，然后跳转到首页
				try {
					await this.initApp();
					// 初始化完成后跳转
					uni.switchTab({
						url: '/pages/index/index'
					});
				} catch (error) {
					console.error('初始化失败:', error);
					// 初始化失败也跳转到首页或登录页
					uni.switchTab({
						url: '/pages/index/index'
					});
				}
			},
			async initApp() {
				const token = uni.getStorageSync('token');
				if (token) {
					try {
						const userInfo = uni.getStorageSync('userInfo');
						if (userInfo) {
							this.$store.commit('SET_USER_INFO', userInfo);
							this.$store.commit('SET_ACCESS_TOKEN', token);
						}
						await this.$store.dispatch('loadCategories');
					} catch (error) {
						console.error('初始化应用失败:', error);
					}
				}
			}
		}
	};
</script>

<style>
	/* 全局样式 */
	page {
		background-color: #f8f8f8;
		font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', Helvetica, sans-serif;
	}

	.container {
		padding: 20rpx;
	}

	/* 全局加载样式 */
	.global-loading {
		position: fixed;
		top: 0;
		left: 0;
		right: 0;
		bottom: 0;
		background: rgba(0, 0, 0, 0.5);
		display: flex;
		justify-content: center;
		align-items: center;
		z-index: 9999;
		color: white;
	}

	/* 通用按钮样式 */
	.primary-btn {
		background-color: #007AFF;
		color: white;
		border: none;
		border-radius: 10rpx;
		padding: 20rpx 40rpx;
		font-size: 32rpx;
	}

	.primary-btn:active {
		background-color: #0056CC;
	}

	/* 输入框样式 */
	.input-field {
		border: 2rpx solid #E5E5EA;
		border-radius: 10rpx;
		padding: 20rpx;
		font-size: 32rpx;
		background-color: white;
	}

	.input-field:focus {
		border-color: #007AFF;
	}

	/* 卡片样式 */
	.card {
		background: white;
		border-radius: 20rpx;
		padding: 30rpx;
		margin: 20rpx;
		box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.1);
	}
</style>